package facade;

import interfaces.IFHotelController;

import java.rmi.RemoteException;
import java.util.List;

import model.Hospedagem;
import model.Hospede;
import model.Hotel;
import remoto.Cliente;

public class ClienteServicos {

	IFHotelController servicos;

	public ClienteServicos() {
		servicos = Cliente.getInstance();
	}

	public String criarHotel(String nome, String gerente, Integer num) {
		if(nome == null || nome.equals(""))
			return "O nome do Hotel não pode estar vazio!";
		if(gerente == null || gerente.equals(""))
			return "O nome do Gerente do Hotel não pode estar vazio!";
		if(num == null || num < 1)
			return "Quantidade de quartos invalida!";
		
		try {
			servicos.criarHotel(nome, gerente, num);
		} catch (RemoteException e) {
			e.printStackTrace();
		}

		return "Hotel criado com sucesso!";
	}

	public List<Hotel> getAllHoteis() {
		try {
			return servicos.getAllHoteis();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}

	public List<Hospede> getAllHospedes() {
		try {
			return servicos.getAllHospedes();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}

	public String criarHospede(String nome, String telefone, String endereco,
			String email, String cpf) throws RemoteException {
		if(nome == null || nome.equals(""))
			return "O nome do Hospede não pode estar vazio!";
		if(endereco == null || endereco.equals(""))
			return "O endereço do Hospede não pode estar vazio!";
		if(cpf == null || cpf.equals(""))
			return "Cpf é necessário!";
		
		
		servicos.criarHospede(nome, telefone, endereco, email,
				cpf);
		
		return "Hospede Cadastrado com sucesso!";
	}
	
	public Hospede findHospedeByCpf(String cpf){
		try {
			return servicos.findHospedeByCpf(cpf);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public String criarHospedagem() {
		
		return "OK";
	}
	
	public Hospedagem criarHospedagem(Integer idHospede, Integer idHotel, Integer numQuarto, String dataChegada, String dataSaida, Boolean isReserva){
		try {
			return servicos.criarHospedagem(idHospede, idHotel, numQuarto, dataChegada, dataSaida, isReserva);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	public List<Hospedagem> getAllHospedagens(){
		try {
			return servicos.getAllHospedagens();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	public Boolean encerrarHospedagem(Integer idHospedagem) {
		try {
			return servicos.encerrarHospedagem(idHospedagem);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return false;
	}
	
	public Hospedagem getReserva(Hospede hospede) {
		try {
			return servicos.getReserva(hospede);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public List<Hospedagem> getAllReservas(){
		try {
			return servicos.getAllReservas();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
}
